#include "Test_Dictionary.h"

#include <QtTest/QtTest>

#include "Dictionary.h"

#include <fstream>

void Test_Dictionary::test_exception()
{
    bool throwed = false;

    try {
        Dictionary("exception.fail");
    }
    catch (...) {
        throwed = true;
    }

    QCOMPARE(throwed, true);
}

void Test_Dictionary::test_loadSystem()
{
    /// Creamos un archivo con el cual comparar.
    // Definimos el nombre del archivo.
    std::string name = "Filename";

    // Definimos las palabras del archivo.
    Dictionary::WordList words
            = {"Word 1", "Word 2", "Word 3"};

    // Abrimos el archivo.
    std::ofstream file("test_loadSystem",
                       std::ios_base::out);

    // Escribimos el nombre del archivo.
    file << name << std::endl;

    // Escribimos las palabras al archivo.
    for (std::string w : words) {
        file << w << std::endl;
    }

    // Cerramos el archivo.
    file.close();

    /// Comparamos el archivo resien creado con
    /// los datos cargados por el diccionario.
    // Creamos nuestro diccionario en base
    // al archivo resien creado.
    Dictionary d("test_loadSystem");

    // Comparamos que el nombre cargado sea
    // el mismo con el que se creo el archivo.
    QCOMPARE(d.name(), name);

    // Comparamos que las palabras sean las
    // mismas con las que se creo el archivo.
    QCOMPARE(d.words(), words);
}
